/* 包含头文件 */
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <signal.h>
#include "soft_timer.h"

/* 创建定时器结构体 */
static soft_timer_t timer_fake;
static uint32_t continue_execution = 1;

static int fake_timer_callback(soft_timer_t* ptimer)
{
    printf("timer callback running!\n");

    return 0;
}

void SignalHandler(int signal) {
   if (signal == SIGTERM || signal == SIGINT ) {
        // set atomic exit flag
        continue_execution = 0;
    }
}

/* 主函数 */
int main(int argc, char* argv[])
{
    signal(SIGTERM, SignalHandler);
    signal(SIGINT, SignalHandler);
    soft_timer_mgr_init();
    /* 创建定时器，永久循环模式，次数为0（永久模式下此数据无效），1s个周期，回调函数 */
    soft_timer_init(&timer_fake, SOFT_TIMER_MODE_FOREVER, 0, 1000, fake_timer_callback);

    /* 启动定时器 */
    soft_timer_start(&timer_fake);

    while (continue_execution)
    {
        /* 定时器轮询 */
        soft_timer_poll_event();
    }

    printf("stop main thread\n");
    soft_timer_mgr_destroy();
    return 0;
}
#if 0
/* 硬件定时器中断服务函数 */
ISR_FUNC void hal_timer_isr(void)
{
    /* 计数值自增 */
    soft_timer_inc_ticks();
}
#endif
